program trab01;

uses
	crt;

var
        mat: array [1..3, 1..5] of integer;
        i, j, s, a: integer;
        op: char;
        lt, ct: integer;

        procedure Cadastrar;
        begin
                clrscr;
                write('Cadastrar Elementos da Matriz:');


                for I := 1 to 3 do
                begin
                        for J := 1 to 5 do
                        begin
                                gotoxy(5, 5);
                                write('Informe elemento (', I, ', ', J, '): ');
                                readln(mat[I, J]);
                        end;
                end;

        end;

        procedure ExibirMatriz;
        begin

                clrscr;
                write('Exibir Matriz');
                lt := 5;

                for i := 1 to 3 do
                begin
                        ct := 5;
                        for j := 1 to 5 do
                        begin
                                gotoxy(ct, lt);
                                write(mat[I, J]);
                                ct := ct + 5;
                        end;
                        inc(lt);
                end;
                gotoxy(30, 22);
                writeln('Pressione uma tecla para voltar...');

                readkey;
        end;

        procedure ExibirMaiorElementos;
        begin
                clrscr;
                writeln('Exibir Maior Elemento');

                a := 0;
                for i := 1 to 3 do
                begin
                        for j := 1 to 5 do
                        begin
                                if mat[i, j] > a then
                                        a := mat[i, j];
                        end;
                end;

                gotoxy(30, 22);
                writeln('O Maior Elemento digitado e ', a);
                readkey;
        end;

        function SomaElementos: integer;
        begin

                a := 0;

                for I := 1 to 3 do
                        for J := 1 to 5 do
                                a := a + mat[i, j];
                SomaElementos := a;
        end;

        procedure ExibirSomaElementos;
        begin
                clrscr;
                writeln('Exibir Soma dos Elementos');

                a := SomaElementos;
                gotoxy(30, 22);
                writeln('Soma dos Elementos: ', a);
                readkey;
        end;

        procedure ExibirMediaElementos;
        begin
                clrscr;
                write('Exibir Media dos Elementos');

                a := SomaElementos;

                gotoxy(30, 22);
                writeln('Media dos Elementos: ', a / 15:2:2);
                readkey;
        end;

begin


        repeat
                clrscr;
                writeln('1 - Cadastrar Elementos da Matriz ');
                writeln('2 - Exibir Matriz                 ');
		writeln('3 - Exibir Maior Elemento         ');
		writeln('4 - Exibir Soma dos Elementos     ');
		writeln('5 - Exibir Media dos Emementos    ');
		writeln('6 - Sair                          ');

		op := readkey;

		case op of
			'1': Cadastrar;
			'2': ExibirMatriz;
			'3': ExibirMaiorElementos;
			'4': ExibirSomaElementos;
                        '5': ExibirMediaElementos;
			'6':
			begin
                                writeln('...Finalizando o programa... ');
			end;

		end;

        until op = '6';


end.
